// 模拟 lodash 中的函数组合方法 _.flowRight()

const reverse = array => array.reverse()
const first = array => array[0]
const toUpper = string => string.toUpperCase()



// arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
// reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行)，将其结果汇总为单个返回值。
// Accumulator (acc) (累计器)
// Current Value (cur) (当前值) 当前值是一个function
// function compose (...args){
//     return function (value){
//         return args.reverse().reduce(function(acc, fun){
//             return fun(acc)
//         }, value)
//     }
// }

const compose = (...args) => value => args.reverse().reduce((acc, fun)=>fun(acc), value)

// 函数从右往左执行
const test = compose(toUpper, first ,reverse)

console.log(test('first,second,third'.split(',')))